import { v4 as uuidv4 } from "uuid";
import axios from "axios";
const basePath = "http://8.130.32.196:1452"; // 你的服务器接口域名
import OSS from "ali-oss";
/**
 * 阿里云oss sdk文件上传
 * @param {*} file 文件流
 * @param {*} successCallback 成功回调
 * @param {*} errCallBack 失败回调
 * @param {*} bucketName 阿里云桶名（可以指定多个桶名）
 * @param {*} dir 上传文件夹路径  譬如images
 */
export function bucketUpload(
  file: any,
  successCallback = new Function(),
  errCallBack = new Function(),
  bucketName = "reclaim-me",
  dir = "image"
) {
  const fileName = file.name;
  const pathName = window.location.host;
  const bucketNameTemp = bucketName;
  const requestData = {
    bucket: bucketNameTemp,
    dir: dir
  };
  // 先获取上传要的资料签名
  // axios({
  //   method: "post",
  //   url: basePath + "/aliyunsts", // 找后台要接口，返回new OSS需要的参数
  //   headers: {
  //     "Content-Type": "application/json"
  //   },
  //   data: requestData // 这里的参数，看后台要什么，沟通确定
  // })
  //   .then((res) => {
  //     const obj = res.data || {};
  //     const config = {
  //       host: ""
  //     };
  // console.log(obj)
  // config.host = obj.OssUrl;
  // 实例化一个上传客户端
  const client = new OSS({
    // yourRegion填写Bucket所在地域。Region填写为oss-cn-hangzhou。
    region: "oss-cn-shenzhen",
    // 从STS服务获取的临时访问密钥（AccessKey ID和AccessKey Secret）。
    accessKeyId: "LTAI5tQD7WdRgT9LpwPGUboB",
    accessKeySecret: "pEHf9B3EdlobeW3aklWwyfu4YTgHzl",
    // 从STS服务获取的安全令牌（SecurityToken）。
    // stsToken: obj.SecurityToken,
    // 填写Bucket名称。
    bucket: "reclaim-me"
  });

  try {
    // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
    // 您可以通过自定义文件名（例如exampleobject.txt）或文件完整路径（例如exampledir/exampleobject.txt）的形式实现将数据上传到当前Bucket或Bucket中的指定目录。
    // data对象可以自定义为file对象、Blob数据或者OSS Buffer。

    // 为保证唯一性，通过uuid将文件名替换
    const uuid = uuidv4() + fileName.substring(fileName.lastIndexOf("."));
    if (dir.substring(dir.length - 1, 1) !== "/") {
      dir += "/";
    }
    const result = client.put(dir + uuid, file);
    result
      .then((res) => {
        console.log(res);
        // const size =
        //   file.size > 1000000
        //     ? parseFloat(file.size / 1000000).toFixed(2) + "M"
        //     : parseFloat(file.size / 1000).toFixed(2) + "KB";
        // 成功回调
        successCallback({
          attachment: fileName,
          aliyunAddress: res.url
          // size: size
          // host: config.host
        });
      })
      .catch((err) => {
        // 失败回调
        errCallBack(err);
      });
  } catch (e) {
    console.log(e);
  }
}
